"""
安装pillow 图像处理库
实验3：创建一个验证码图片，图片中间均匀分布四个随机字母或数字
      再给图片增加一个模糊效果
"""


# 测试
# from PIL import Image
# img = Image.open("./files/jpg/1.jpg")  # 代码连接图片
# img.show()  # 展示出来
# print(img.size)  # 图片尺寸
# print(img.format)  # 图片格式

# 实验6.3
from PIL import Image, ImageDraw,ImageFont,ImageFilter
import random
import string
import math

# 1 创建一个白色背景图片：
# 色彩模式:RGB
# 大小:(宽,高)
# 背景色:(R,G,B) 每个数字必须从0-255
width = 1200
height = 400
img = Image.new("RGB", (width, height), (255, 255, 255))
# 2 给图片的每个像素点填充一个随机色
draw = ImageDraw.Draw(img)  # 返回一个画笔对象

# 根据模式(bg,fg)返回一个颜色值
def rand_color(mode):
    if mode == "bg":
        start_num = 0
        end_num = 150
    elif mode == "fg":
        start_num = 120
        end_num = 255
    r = random.randint(start_num, end_num)
    g = random.randint(start_num, end_num)
    b = random.randint(start_num, end_num)
    return r, g, b  # 当函数返回多个值，会自动以元组的形式返回


def rand_char():# 获取一个随机的大小写字母或数字
    s = string.ascii_letters + string.digits  #a...zA...Z0...9
    return random.choice(s)

for x in range(width):#填充背景
    for y in range(height):
        draw.point((x, y), rand_color("bg"))  # 画一个点
# 3 给图片上填充四个随机字母或数字
font = ImageFont.truetype("arial.ttf",199)
for i in range(4):
    draw.text((150+300*i,random.randint(10, 200)),rand_char(),rand_color("fg"),font)  # 以坐标点为左上角画一个矩形块，把文字放进去
# 4 增加模糊效果
img = img.filter(ImageFilter.BLUR)

# create line image
# w, h = 220, 190
# shape = [(40, 40), (w - 10, h - 10)]

# img1 = ImageDraw.Draw(img)
# img1.line([(10, 10),(1000, 100)], fill = "black", width=0)
# img1.line()

img1 = ImageDraw.Draw(img)
img1.line([(10, 10), (1200, 300)], fill="black", width=3)  # 注意这里的width参数应该是大于0的整数
img1.line([(10, 300), (1200, 10)], fill="black", width=3)  # 注意这里的width参数应该是大于0的整数


img.show()
img.close()  # 关闭图片对象 释放资源
